package com.farm.configer.form;

import java.util.LinkedHashMap;
import java.util.Map;

import com.farm.configer.domain.Configer;
import com.farm.configer.form.impl.FieldCompleteConfigerModelImpl;
import com.farm.configer.form.impl.NoneConfigerModelImpl;
import com.farm.configer.form.impl.SqlParseConfigerModelImpl;
import com.farm.configer.service.ConfigerServiceInter;
import com.farm.util.spring.BeanFactory;

/**
 * 用户参数表单生成器
 * 
 * @author Wd
 *
 */
public class ConfigerFormGenerator {
	/**
	 * 获得参数表单实现类
	 * 
	 * @param configerId
	 * @param metaConfigs
	 * @return
	 */
	public static FormModel getConfigerModelInstance(String configerId) {
		ConfigerServiceInter configerServiceImpl = (ConfigerServiceInter) BeanFactory.getBean("configerServiceImpl");
		Configer configer = configerServiceImpl.getConfigerEntity(configerId);
		if (configer.getModel().equals("NONE")) {
			return new NoneConfigerModelImpl(configer);
		}
		if (configer.getModel().equals("SQL")) {
			return new SqlParseConfigerModelImpl(configer);
		}
		if (configer.getModel().equals("FIELD_COMPLETE")) {
			return new FieldCompleteConfigerModelImpl(configer);
		}
		throw new RuntimeException("the model is not exist:" + configer.getModel());
	}

	/**
	 * 枚举所有的模型类型
	 * 
	 * @return
	 */
	public static Map<String, String> getModels() {
		Map<String, String> map = new LinkedHashMap<String, String>();
		map.put("NONE", "自定义");
		map.put("SQL", "单表SQL");
		map.put("FIELD_COMPLETE", "单表字段完善");
		return map;
	}

	/**
	 * 枚举所有的表单类型
	 * 
	 * @return
	 */
	public static Map<String, String> getFormModels() {
//		<option value="text">文本</option>
//		<option value="textarea">大文本</option>
//		<option value="inner">内部参数</option>
		Map<String, String> map = new LinkedHashMap<String, String>();
		map.put("text", "文本");
		map.put("textarea", "大文本");
		map.put("select", "枚举");
		map.put("inner", "内部参数");
		return map;
	}
}
